<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0" />
    <title>commonJs规范</title>
</head>

<body>
    <div>
        <h1>commonJs规范</h1>
        <p>CommonJS规范起初是为了祢补JS</p>
        <p>CommonJS是语言层面的规范，当前主要应用于Node.js</p>
        <p>CommonJS规定模块化分为引入、定义、标识符三个部分</p>
        <p>Module在任意模块中可以直接使用包含模块信息</p>
        <p>Require 接收标识符，加载目标模块</p>
        <p>Exports 于 module.export 都能导出模块数据</p>
        <p>CommonJS规范定义模块的加载是同步完成</p>
    </div>
    <div>
        <h1>commonJs规范主要应用于Nodejs</h1>
        <h1>commonJs是语言层面上的规范</h1>
    </div>
    <div>
        <h1>commonJs规范</h1>
        <p>模块引用:require</p>
        <p>模块定义:export</p>
        <p>模块标识（参数，ID）</p>
    </div>
    <div>
        <h1>NodeJs与CommonJs</h1>
        <p>任意一个文件就是一个模块，具有独立作用域</p>
        <p>使用require导入其他模块</p>
        <p>将模块ID传入require实现目标模块定位</p>
    </div>
    <div>
        <h1>module属性</h1>
        <p>任意js文件就是一个模块，可以直接使用module属性</p>
        <p>id:返回模块标识符，一般是一个绝对路径</p>
        <p>filename:返回文件模块的绝对路径</p>
        <p>loaded:返回布尔值，表示模块是否完成加载</p>
        <p>parent:返回对象存放调用当前的模块</p>
        <p>children:返回数组，存放当前模块调用的其他模块</p>
        <p>export:返回当前模块需要暴露的内容</p>
        <p>paths:返回数组，存放不同目录下的node_modules位置</p>
    </div>
    <div>
        <h1>module.exports 与 export有何区别</h1>
        <p>两者都可以导出，export是为了方便操作，不可以重新赋值</p>
    </div>
    <div>
        <h1>require属性</h1>
        <p>基本功能是读入并且执行一个模块文件</p>
        <p>resolve:返回模块文件绝对路径</p>
        <p>extensions:依据不同后缀名执行解析操作</p>
        <p>main:返回主模块对象</p>
    </div>
</body>

</html>